使用mapper時我們項目進行save測試會發現即便是沒給予資料的屬性,只要是bean當中有定義,就會被覆蓋為初始值。或者若打算更新項目時,DynamoDB當中並不存在相同主索引的項目,就會變成是新增資料。這時候我們需要給予mapper額外的設定,來進行需要的資料操作性質。
所以本篇先來看DynamoDBMapperConfig提供的儲存設定項目
DynamoDBMapperConfig.SaveBehavior 列舉值有以下幾個
以預設值UPDATE來說,應該符合POST新增及PUT新增或完全更新,不過若是PATCH我們就需要使用UPDATE_SKIP_NULL_ATTRIBUTES來達到部分更新的效果了
DynamoDBMapperConfig.ConsistentReads 列舉值
- EVENTUAL— 映射器執行個體使用最終一致讀取請求。
- CONSISTENT— 映射器執行個體使用強式一致讀取請求。您可以搭配使用這個選用設定與 load、query 或 scan 操作。強式一致讀取具有效能和帳單隱憂。
預設使用EVENTUAL,如果有要求最新資料的需求則可使用CONSISTENT,但是就如文件所述,最好要查閱效能跟收費影響
DynamoDBMapperConfig.PaginationLoadingStrategy列舉值
控制映射器執行個體如何處理分頁資料清單,例如 query 或 scan 的結果:
- LAZY_LOADING— 映射器執行個體會在可能時載入資料,並將所有載入的結果保留在記憶體中。
- EAGER_LOADING— 映射器執行個體會在初始化清單時立即載入資料。
- ITERATION_ONLY— 您只能使用從清單中讀取的迭代器。在反覆運算期間,清單會先清除所有先前的結果,再載入下一頁,因此清單最多會將一頁的已載入結果保留在記憶體中。這也表示清單只能重複使用一次。處理大型項目時,建議使用此策略,以減少記憶體負擔。
如果您未指定映射器執行個體的分頁載入策略,則預設值為 LAZY_LOADING。
使用此設定取決於你打算取得的資料查詢量及處理資料的方法
DynamoDBMapperConfig.TableNameOverride 物件則用以取代bean所註釋的資料表對象,當你需要用同樣的項目描述但是另外儲存操作在其他資料表時可用。